package cn.yeziji.forum.service;

import cn.yeziji.forum.common.ForumPageResult;
import cn.yeziji.forum.dto.file.ForumFilePagingDTO;
import cn.yeziji.forum.entity.ForumFileEntity;
import cn.yeziji.forum.basic.file.WebUploaderFileEntity;
import cn.yeziji.forum.entity.ForumUserEntity;

import java.io.InputStream;
import java.util.List;

/**
 * 论坛文件服务
 *
 * @author gzkemays
 * @since 2022/5/12 16:59
 */
public interface ProvideService {
  /**
   * 检查token
   *
   * @param token 请求携带的 token
   * @return token 是否可用
   */
  boolean checkToken(String token);
  /**
   * 获取进度
   *
   * @param md5 文件 md5
   * @return 上传进度
   */
  Integer getProcess(String md5);
  /**
   * 保存数据
   *
   * @param wfe 文件对象
   */
  void save(WebUploaderFileEntity wfe);
  /**
   * 根据 token 获取 username
   *
   * @param token token
   * @return username
   */
  String getUsernameByToken(String token);

  /**
   * 根据 token 获取 user 信息
   *
   * @param token token
   * @return {@link ForumUserEntity} 用户实体对象
   */
  ForumUserEntity getUserEntityByToken(String token);

  List<ForumFileEntity> getFileEntitiesBySource(String source);

  List<ForumFileEntity> getFileEntitiesByScope(String scope);

  ForumPageResult<ForumFileEntity> getFileEntitiesPage(ForumFilePagingDTO pagingDTO);

  String uploadToOss(String savePath, String filename, InputStream stream);

  void del(String scope, String source);
}
